﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using SmartSoft.Convert.DataAccess;
using System.Data.OracleClient;
using System.Data.SqlClient;

namespace SmartSoft.Convert
{
    public partial class MainConvert : Form
    {
        public MainConvert()
        {
            InitializeComponent();
        }

        private void btnGetDB_Click(object sender, EventArgs e)
        {
            try
            {
                string strConn = ConnStringOra();

                DataSet ds = new DataSet();
                //Lấy dữ liệu của bảng nhóm tài sản
                ds = OracleHelper.ExecuteDataset(strConn, CommandType.Text, "select * from FA011MB");
                gvNhomtaisan.DataSource = ds.Tables[0];
                gvNhomtaisan.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);

                //Lấy dữ liệu của bảng loại tài sản
                ds = OracleHelper.ExecuteDataset(strConn, CommandType.Text, "select * from FA001MB");
                gvLoaitaisan.DataSource = ds.Tables[0];
                gvLoaitaisan.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);

                //Lấy dữ liệu của bảng tài sản
                ds = OracleHelper.ExecuteDataset(strConn, CommandType.Text, "select * from FA040MB");
                gvTaisan.DataSource = ds.Tables[0];
                gvTaisan.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);


                //Lấy dữ liệu của bảng thông tin thêm về tài sản
                ds = OracleHelper.ExecuteDataset(strConn, CommandType.Text, "select * from FA041MB");
                gvExTaisan.DataSource = ds.Tables[0];
                gvExTaisan.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCellsExceptHeader);

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Thông báo lỗi", MessageBoxButtons.OK);
            }
        }

        private void btnChkOra_Click(object sender, EventArgs e)
        {
            try
            {
                string strConn = ConnStringOra();

                using (OracleConnection OraConn = new OracleConnection(strConn))
                {
                    OraConn.Open();

                    if (OraConn.State== ConnectionState.Open)
                        MessageBox.Show("Kết nối thành công tới cơ sở dữ liệu của Intelect", "Thông báo kết nối", MessageBoxButtons.OK);
                    else
                        MessageBox.Show("Kết nối không thành công tới cơ sở dữ liệu của Intelect", "Thông báo kết nối", MessageBoxButtons.OK);

                    OraConn.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Thông báo lỗi", MessageBoxButtons.OK);
            }

        }

        private string ConnStringOra()
        {
            string strConn = "user id=" + txtOraUserName.Text.Trim() 
                            + ";password=" + txtOraPassword.Text.Trim() 
                            + ";data source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=" + txtOraIp.Text.Trim() 
                            + ")(PORT=" + txtOraPort.Text.Trim() 
                            + "))(CONNECT_DATA=(SERVICE_NAME=" + txtOraDatabase.Text.Trim() + ")))";
            return strConn;
        }

        private string ConnStringSql()
        {
            string strConn = "Server=" + txtSqlIp.Text.Trim() 
                            + ";Database=" + txtSqlDatabase.Text.Trim() 
                            + ";User ID=" + txtSqlUserName.Text.Trim() 
                            + ";Password=" + txtSqlPassword.Text.Trim() 
                            + ";Connection Reset=FALSE;Min Pool Size=2;Connection Lifetime=120;Connection Timeout=60;";
            return strConn;
        }

        private void btnChkSql_Click(object sender, EventArgs e)
        {
            try
            {
                string strConn = ConnStringSql();

                using (SqlConnection SqlConn = new SqlConnection(strConn))
                {
                    SqlConn.Open();

                    if (SqlConn.State == ConnectionState.Open)
                        MessageBox.Show("Kết nối thành công tới cơ sở dữ liệu của Quản lý tài sản công cụ", "Thông báo kết nối", MessageBoxButtons.OK);
                    else
                        MessageBox.Show("Kết nối không thành công tới cơ sở dữ liệu của Quản lý tài sản công cụ", "Thông báo kết nối", MessageBoxButtons.OK);

                    SqlConn.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Thông báo lỗi", MessageBoxButtons.OK);
            }

        }

        private void btnImportDB_Click(object sender, EventArgs e)
        {
            try
            {
                string strConnSql = ConnStringSql();
                string strConnOra = ConnStringOra();

                DataSet ds = new DataSet();
                //Lấy dữ liệu của bảng nhóm tài sản
                ds = OracleHelper.ExecuteDataset(strConnOra, CommandType.Text, "select * from FA011MB");
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    SqlHelper.ExecuteNonQuery(strConnSql, CommandType.StoredProcedure, "DmNhomTSCC_Save",
                                                            new SqlParameter("@p_Group", dr[1].ToString()),
                                                            new SqlParameter("@p_Code", dr[2].ToString()),
                                                            new SqlParameter("@p_Description", dr[3].ToString()));
                }

                //Lấy dữ liệu của bảng loại tài sản
                ds = OracleHelper.ExecuteDataset(strConnOra, CommandType.Text, "select * from FA001MB");
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    SqlHelper.ExecuteNonQuery(strConnSql, CommandType.StoredProcedure, "DmLoaiTSCC_Save",
                                                            new SqlParameter("@p_Code", dr[1].ToString()),
                                                            new SqlParameter("@p_Description", dr[2].ToString()));
                }

                //Lấy dữ liệu của bảng tài sản
                ds = OracleHelper.ExecuteDataset(strConnOra, CommandType.Text, "select * from FA040MB");
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    SqlHelper.ExecuteNonQuery(strConnSql, CommandType.StoredProcedure, "DmTSCC_Save",
                                                            new SqlParameter("@p_Ma_Ts", dr["ASSET_ID"].ToString()),
                                                            new SqlParameter("@p_Ma_Nh_Ts", dr["ASSET_SUB_TYPE"].ToString()),
                                                            new SqlParameter("@p_Ten_Ts", dr["BRAND_ID"].ToString()),
                                                            new SqlParameter("@p_Ten_Ts_E", dr["MODEL_ID"].ToString()),
                                                            new SqlParameter("@p_Ma_NCC", dr["SUPPLIER_CODE"].ToString()),
                                                            new SqlParameter("@p_So_Thang", dr["AGE"].ToString()),
                                                            new SqlParameter("@p_Dien_Giai", dr["ASSET_DESC"].ToString()),
                                                            new SqlParameter("@p_Ngay_Ts", dr["PURCHASE_DATE"].ToString()),
                                                            new SqlParameter("@p_Ma_Loai1", dr["AC_NO"].ToString()),
                                                            new SqlParameter("@p_So_Luong", dr["QUANTITY"].ToString()),
                                                            new SqlParameter("@p_Ma_DvCs", "abc"),
                                                            new SqlParameter("@p_TTien0", dr["PURCHASE_VALUE"].ToString()),
                                                            new SqlParameter("@p_So_Ct_T", dr["VOUCH_NO"].ToString()));
                                                            
                                                            
                }

                //Lấy thông tin bổ xung cho tài sản
                ds = OracleHelper.ExecuteDataset(strConnOra, CommandType.Text, "select * from FA041MB");
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    SqlHelper.ExecuteNonQuery(strConnSql, CommandType.StoredProcedure, "DmBSTSCC_Save",
                                                            new SqlParameter("@p_Ma_Ts", dr["ASSET_ID"].ToString()),
                                                            new SqlParameter("@p_Desc_EN", dr["COL_1"].ToString()),
                                                            new SqlParameter("@p_Cong_Suat", dr["COL_2"].ToString()),
                                                            new SqlParameter("@p_Ma_Loai2", dr["COL_3"].ToString()),
                                                            new SqlParameter("@p_Nuoc_Sx", dr["COL_4"].ToString()),
                                                            new SqlParameter("@p_Nam_Sx", dr["COL_5"].ToString()),
                                                            new SqlParameter("@p_Ma_Loai3", dr["COL_6"].ToString()),
                                                            new SqlParameter("@p_Ma_Dvt", dr["COL_8"].ToString()));


                }

                //Thực hiện tạo lại mã stt và phân cấp nhóm tài sản
                SqlHelper.ExecuteNonQuery(strConnSql, CommandType.StoredProcedure, "Generate_Stt_Nh_Ts");
                //SqlHelper.ExecuteNonQuery(strConnSql, CommandType.StoredProcedure, "Nhom_Ts_Save");

                MessageBox.Show("Đã nhập xong dữ liệu", "Thông báo", MessageBoxButtons.OK);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "Thông báo lỗi", MessageBoxButtons.OK);
            }
        }
    }
}